Dynamic Arrays এবং ReDim Preserve
VBA (Visual Basic for Applications)-এ Dynamic Arrays এবং ReDim Preserve দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনাকে রানটাইমে অ্যারের আকার পরিবর্তন করতে এবং এর মান সংরক্ষণ করতে সহায়তা করে। এগুলি বিশেষভাবে উপকারী যখন আপনি জানেন না যে অ্যারেটির আকার কত বড় হবে, এবং আপনি একটি ফিক্সড আকারের অ্যারে ব্যবহার না করে ডাইনামিকভাবে অ্যারে তৈরি করতে চান।
১. Dynamic Arrays (ডাইনামিক অ্যারে)
Dynamic Arrays হল এমন অ্যারে যেগুলি রানটাইমে আকার পরিবর্তন করতে পারে। সাধারনত, একটি সাধারণ অ্যারে ডিক্লেয়ার করার সময় আপনি আকার (Size) নির্ধারণ করেন, কিন্তু ডাইনামিক অ্যারে আপনাকে পরে আকার পরিবর্তন বা প্রসারিত করার সুবিধা দেয়। VBA-তে, ডাইনামিক অ্যারে তৈরি করার সময় প্রথমে এর আকার উল্লেখ করা হয় না এবং পরে ReDim স্টেটমেন্টের মাধ্যমে তার আকার পরিবর্তন করা হয়।
Dynamic Array ডিক্লেয়ার করা:
Dim myArray() As Integer ' ডাইনামিক অ্যারে ডিক্লেয়ার করা, আকার নির্ধারণ করা হয়নিএখানে, myArray() একটি ডাইনামিক অ্যারে হিসেবে ডিক্লেয়ার করা হয়েছে, কিন্তু এর আকার নির্ধারণ করা হয়নি।
Dynamic Array এর আকার নির্ধারণ:
ReDim myArray(5) ' অ্যারের আকার ৫ নির্ধারণ করাএখন, myArray একটি ডাইনামিক অ্যারে যার আকার ৫।
২. ReDim এবং ReDim Preserve
ReDim একটি স্টেটমেন্ট যা ডাইনামিক অ্যারের আকার পরিবর্তন করতে ব্যবহৃত হয়। আপনি যখন নতুন আকারের জন্য অ্যারের আকার পরিবর্তন করতে চান, তখন ReDim ব্যবহার করা হয়। তবে, যদি আপনি ReDim স্টেটমেন্টটি ব্যবহার করেন, তাহলে পুরনো মানগুলো মুছে যাবে। তবে যদি আপনি পুরনো মানগুলো সংরক্ষণ করতে চান, তখন ReDim Preserve ব্যবহার করতে হবে।
ReDim (Array Size Change Without Preserving Values)
Dim myArray() As Integer
ReDim myArray(5) ' অ্যারের আকার ৫ নির্ধারণ
myArray(0) = 10
myArray(1) = 20
myArray(2) = 30
myArray(3) = 40
myArray(4) = 50
' অ্যারের আকার পরিবর্তন
ReDim myArray(10) ' পুরানো মানগুলো মুছে যাবেএখানে, প্রথমে অ্যারের আকার 5 নির্ধারণ করা হয় এবং কিছু মান দেওয়া হয়। তারপর ReDim ব্যবহার করে অ্যারের আকার পরিবর্তন করা হয়েছে। তবে, অ্যারের নতুন আকারের জন্য পুরনো মানগুলো মুছে যাবে।
ReDim Preserve (Preserve Array Values)
ReDim Preserve ব্যবহার করা হয় যখন আপনি অ্যারের আকার পরিবর্তন করতে চান কিন্তু পূর্বের মানগুলো সংরক্ষণ করতে চান।
Dim myArray() As Integer
ReDim myArray(5) ' অ্যারের আকার ৫ নির্ধারণ
myArray(0) = 10
myArray(1) = 20
myArray(2) = 30
myArray(3) = 40
myArray(4) = 50
' অ্যারের আকার পরিবর্তন, কিন্তু পুরনো মানগুলো রক্ষা করতে ReDim Preserve ব্যবহার করা হয়েছে
ReDim Preserve myArray(10) ' অ্যারের আকার ১০ হবে, পুরনো মানগুলো রক্ষা হবেএখানে, ReDim Preserve myArray(10) ব্যবহার করে অ্যারের আকার ৫ থেকে ১০-এ পরিবর্তন করা হয়েছে, তবে পুরনো মানগুলো রক্ষা করা হয়েছে।
ReDim Preserve এবং Limitations
ReDim Preserve কেবলমাত্র অ্যারের শেষ (last dimension) এর আকার পরিবর্তন করতে পারে। যদি আপনার অ্যারেতে একাধিক মাত্রা (multi-dimensional array) থাকে, তাহলে আপনি কেবলমাত্র একমাত্র শেষ মাত্রা পরিবর্তন করতে পারবেন।
উদাহরণ:
Dim myArray(2, 3) As Integer ' 2x3 ম্যাট্রিক্স myArray(0, 0) = 1 myArray(0, 1) = 2 myArray(1, 0) = 3 myArray(1, 1) = 4 ' নিচের কোডটি একটি ভুল হবে, কারণ multi-dimensional অ্যারের প্রথম মাত্রা পরিবর্তন করা যাবে না ' ReDim Preserve myArray(5, 3)- Performance Impact:
ReDim Preserveব্যবহারের ফলে অ্যারের পুরনো মানগুলো কপি করা হয়, যা কিছু পরিমাণ সময় নিতে পারে যদি অ্যারের আকার খুব বড় হয়।
ReDim এবং ReDim Preserve এর ব্যবহার:
উদাহরণ ১: ডাইনামিক অ্যারে ব্যবহার
Sub Example1()
Dim numbers() As Integer
Dim i As Integer
ReDim numbers(2) ' অ্যারের আকার ৩ নির্ধারণ
For i = 0 To 2
numbers(i) = i * 10
Next i
' অ্যারের আকার পরিবর্তন এবং পুরনো মান সংরক্ষণ
ReDim Preserve numbers(5) ' আকার ৬ করতে হবে
For i = 3 To 5
numbers(i) = i * 10
Next i
' অ্যারের মান প্রদর্শন
For i = 0 To 5
MsgBox numbers(i)
Next i
End Subএখানে, প্রথমে একটি ডাইনামিক অ্যারে তৈরি করা হয়েছে যার আকার ৩ এবং কিছু মান দেওয়া হয়েছে। পরে, ReDim Preserve ব্যবহার করে অ্যারের আকার ৬ করা হয়েছে, এবং নতুন মানগুলো যোগ করা হয়েছে।
উদাহরণ ২: মাল্টি-ডাইমেনশনাল অ্যারে এবং ReDim Preserve
Sub Example2()
Dim matrix(1, 2) As Integer
matrix(0, 0) = 1
matrix(0, 1) = 2
matrix(1, 0) = 3
matrix(1, 1) = 4
' মাল্টি-ডাইমেনশনাল অ্যারে এবং ReDim Preserve এর ব্যবহার
ReDim Preserve matrix(1, 3) ' ২য় মাত্রা পরিবর্তন
matrix(1, 2) = 5
matrix(1, 3) = 6
' অ্যারের মান প্রদর্শন
MsgBox matrix(0, 0)
MsgBox matrix(0, 1)
MsgBox matrix(1, 2)
MsgBox matrix(1, 3)
End Subএখানে, matrix একটি 2D অ্যারে এবং ReDim Preserve ব্যবহার করে দ্বিতীয় মাত্রার আকার পরিবর্তন করা হয়েছে, যা সফলভাবে কাজ করবে।
উপসংহার:
- Dynamic Arrays আপনাকে VBA-তে অ্যারের আকার চলাকালীন পরিবর্তন করতে সক্ষম করে।
- ReDim স্টেটমেন্ট দ্বারা অ্যারের আকার পরিবর্তন করা যায়, তবে এটি অ্যারের পুরনো মান মুছে দেয়।
- ReDim Preserve স্টেটমেন্ট ব্যবহারের মাধ্যমে অ্যারের পুরনো মান সংরক্ষণ করা যায় যখন অ্যারের আকার পরিবর্তন করা হয়, তবে এটি শুধুমাত্র শেষ মাত্রার আকার পরিবর্তন করতে সক্ষম।
- Performance Impact: বড় অ্যারের জন্য
ReDim Preserveব্যবহারের ফলে কিছু পারফরম্যান্স ইমপ্যাক্ট হতে পারে, কারণ পুরনো মান কপি করা হয়।
এই বৈশিষ্ট্যগুলি VBA-তে ডাইনামিক ডেটা সংরক্ষণ এবং পরিচালনার জন্য খুবই শক্তিশালী এবং নমনীয় পদ্ধতি।
Read more